Skip to content

feat(proxy): add support for oci manifest images#628

Merged
thijmv merged 2 commits into
masterfrom
thijmv/oci-manifest-support
Jun 10, 2026
Merged

feat(proxy): add support for oci manifest images#628
thijmv merged 2 commits into
masterfrom
thijmv/oci-manifest-support

Conversation

@thijmv

@thijmv thijmv commented May 29, 2026

Copy link
Copy Markdown
Collaborator

Summary

This PR (1/3) adds OCI manifest support to Kraken. OCI manifests are the modern Docker standard and enable layer compression with additional algorithms (e.g. zstd), which may improve transfer and decompression times.

This PR makes the following changes:

  • OCI parsing
    • Add parsing support for OCI manifests.
    • Peek at the media type of manifests, rather than trying each possible format.
  • Prefetching
    • Fix dependency resolution for prefetching, which excluded (sub-)manifest and config blobs.
    • Return an error when sub-manifest blobs cannot be downloaded, instead of silently continuing with a partial dependency list.

Fixes #574.

Stack

  1. @ feat(proxy): add support for oci manifest images #628
  2. fix(build-index): return 404 on backend unavailability to unblock docker pushes #631
  3. ci(integration): add containerd snapshotter matrix #632

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds OCI image manifest/index support across Kraken’s Docker manifest parsing, proxy prefetch/preheat paths, puller utility, fixtures, and CI coverage.

Changes:

  • Extends manifest parsing to support Docker v2 manifests/lists and OCI manifests/indexes through a shared dockerutil.ParseManifest.
  • Updates proxy prefetch/preheat and puller behavior to consume OCI manifests and include manifest/config blobs where applicable.
  • Adds OCI fixtures/tests and runs integration tests with containerd snapshotter enabled and disabled.

Reviewed changes

Copilot reviewed 8 out of 9 changed files in this pull request and generated no comments.

Show a summary per file
File Description
utils/dockerutil/dockerutil.go Adds OCI-aware manifest parsing and supported Accept media types.
utils/dockerutil/dockerutil_test.go Covers Docker and OCI manifest parsing cases.
utils/dockerutil/fixtures.go Adds OCI manifest and index test fixtures.
proxy/proxyserver/prefetch.go Uses shared parser and descends manifest lists/indexes for blob collection.
proxy/proxyserver/preheat.go Allows OCI image manifest push notifications.
proxy/proxyserver/server_test.go Updates and adds prefetch tests for manifest lists and OCI indexes.
tools/bin/puller/pull.go Uses shared parser and requests OCI single-arch manifests.
.github/workflows/build-and-test.yaml Adds integration matrix for Docker and OCI/containerd snapshotter modes.
test/python/conftest.py Removes stale OCI-support TODO comment.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@thijmv thijmv force-pushed the thijmv/oci-manifest-support branch from 5c3f555 to af0fca7 Compare June 1, 2026 11:31
@thijmv thijmv marked this pull request as ready for review June 1, 2026 12:30
@thijmv thijmv force-pushed the thijmv/oci-manifest-support branch from af0fca7 to ac8edc6 Compare June 1, 2026 14:23
@github-actions github-actions Bot added the size/l label Jun 1, 2026
@thijmv thijmv removed the size/xl label Jun 1, 2026
Comment thread utils/dockerutil/dockerutil.go
Comment thread utils/dockerutil/fixtures.go
Comment thread utils/dockerutil/dockerutil_test.go
Comment thread utils/dockerutil/dockerutil_test.go
Comment thread proxy/proxyserver/prefetch.go
Comment thread proxy/proxyserver/prefetch.go
@thijmv thijmv force-pushed the thijmv/oci-manifest-support branch from ac8edc6 to a6edeae Compare June 2, 2026 08:39
…ker pushes (#631)

* fix(build-index): return 404 on backend unavailability to unblock docker pushes

* ci(integration): add containerd snapshotter matrix (#632)
@thijmv thijmv merged commit f43117f into master Jun 10, 2026
10 of 11 checks passed
@thijmv thijmv deleted the thijmv/oci-manifest-support branch June 10, 2026 11:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Kraken does not support OCI manifest files

3 participants